<?php
/**
 * Created by PhpStorm.
 * User: s.utkin
 * Date: 29.08.14
 * Time: 18:45
 */

namespace NotificationDelivery;


abstract class Delivery {
	
	/**
	 * Подписчик
	 * @var string
	 */
	public $subscriber;
	
	function __construct($subscriber) {
		$this->subscriber = (string)$subscriber;
	}
	
	/**
	 * Подписываем пользователя, возвращаем адрес канала
	 * 
	 * @param string $subscriber
	 * @return string channel url
	 */
	abstract public function subscribe();
	
	/**
	 * Добавляем сообщение на отправку
	 * @param string $message
	 */
	abstract public function addMessage($message);
	
    /**
     * Публикуем сообщения (из массива на отправку и если есть указанное)
     * @param string $message
     */
    abstract public function publish($message = null);
    
    
	/**
	 * Возвращаем статус канала (онлайн ли он)
	 * 
	 * @param bool $subscriber
	 */
	abstract public function state();
	
} 